package com.and.video.service.config;

import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.elasticsearch.client.ClientConfiguration;
import org.springframework.data.elasticsearch.client.RestClients;
import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration;

@Configuration
// 继承AbstractElasticsearchConfiguration类，提供了Elasticsearch客户端的基本配置
public class ElasticSearchConfig extends AbstractElasticsearchConfiguration {

    // 使用@Value注解从配置文件中注入elasticsearch服务器的URL地址
    // 配置项elasticsearch.url的值会被注入到esUrl变量中
    @Value("${elasticsearch.url}")
    private String esUrl;

    // 重写父类的elasticsearchClient方法，用于创建并配置Elasticsearch客户端
    @Override
    @Bean
    public RestHighLevelClient elasticsearchClient(){
        // 创建ClientConfiguration配置构建器，用于配置Elasticsearch客户端连接参数
        final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
                // 设置要连接的Elasticsearch服务器地址
                .connectedTo(esUrl)
                .build();

        // 使用配置创建RestClients，并返回高级别REST客户端实例
        return RestClients.create(clientConfiguration).rest();
    }
}